package com.woniuxy.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建 CORS 配置对象
        CorsConfiguration config = new CorsConfiguration();

        // 允许前端域名（精确配置，避免使用 * 导致的安全问题和凭证携带限制）
        // 开发环境：允许本地前端地址（根据实际前端端口修改，如 5174、8080 等）
        config.addAllowedOrigin("http://localhost:5174");
        // 如果有多个前端域名，依次添加
        // config.addAllowedOrigin("http://localhost:8080");

        // 允许携带 Cookie（如果前端需要传递身份凭证，必须设置为 true）
        config.setAllowCredentials(true);

        // 允许所有请求头（包含自定义头，如 token、Content-Type 等）
        config.addAllowedHeader("*");

        // 允许所有 HTTP 方法（GET、POST、PUT、DELETE 等）
        config.addAllowedMethod("*");

        // 预检请求的有效期（秒），避免频繁发送预检请求
        config.setMaxAge(3600L);

        // 2. 配置生效路径（对所有接口生效）
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config); // /** 表示匹配所有接口路径

        // 3. 返回过滤器
        return new CorsFilter(source);
    }
}